package gdf

import (
	"gitee.com/liumou_site/logger"
	"io"
	"net/http"
	"os"
)

// saveToDisk 将HTTP响应的内容保存到磁盘上的指定文件。
// 参数:
//
//	filename: 要保存的文件名。
//	resp: 包含要保存内容的HTTP响应。
//
// 返回值:
//
//	如果保存过程中发生错误，则返回该错误；否则返回nil。
func saveToDisk(filename string, resp *http.Response) error {
	// 创建一个新的文件用于写入下载的内容
	out, err := os.Create(filename)
	if err != nil {
		// 记录文件创建失败的日志并返回错误。
		logger.Error("Error creating file:", err)
		return err
	}
	// 确保在函数返回前关闭文件。
	defer func(out *os.File) {
		err := out.Close()
		if err != nil {
			// 记录文件关闭失败的日志。
			logger.Error(err)
			return
		}
	}(out)

	// 使用io.Copy将响应体的内容复制到文件中
	_, err = io.Copy(out, resp.Body)
	if err != nil {
		// 记录保存文件失败的日志并返回错误。
		logger.Error("Error saving file:", err)
		return err
	}
	// 记录文件保存成功的日志。
	logger.Info("File downloaded successfully.")
	// 调用GetFileSize函数获取文件大小，此处没有返回值也没有对获取的大小做任何处理。
	GetFileSize(filename)
	return nil
}
